package br.com.leopard.erp.gym.dao.empresa;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.Query;

import br.com.leopard.erp.gym.exception.NenhumResultadoEncontradoException;
import br.com.leopard.erp.gym.mapeamento.base_sistema.Modulo;
import br.com.leopard.erp.gym.mapeamento.base_sistema.Perfil;
import br.com.leopard.erp.gym.mapeamento.empresa.Empresa;
import br.com.leopard.erp.gym.mapeamento.empresa.EmpresaPerfil;
import br.com.leopard.erp.gym.mapeamento.empresa.EmpresaPerfilModulo;
import br.com.leopard.erp.gym.persistence.AbstractDAO;
import br.com.leopard.erp.gym.persistence.ParametroQueryBuilder;

@Stateless
@LocalBean
public class EmpresaPerfilModuloDAO extends AbstractDAO<EmpresaPerfilModulo, Long> {

	public EmpresaPerfilModuloDAO() {
		super(EmpresaPerfilModulo.class);
	}

	public void inativarPerfilEmpresaModulo(EmpresaPerfil empresaPerfil) {
		String namedQuery = "EmpresaPerfilModulo.inativarTodosModulosDePerfil";

		Query query = super.entityManager.createNamedQuery(namedQuery);

		query.setParameter("empresaPerfil", empresaPerfil);

		query.executeUpdate();
	}

	public EmpresaPerfilModulo getByEmpresaPerfilEModulo(Empresa empresa, Perfil perfil, Modulo modulo) throws NenhumResultadoEncontradoException {
		String query = "EmpresaPerfilModulo.findByEmpresaEPerfilEModuloEEmpresa";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("empresa", empresa);
		builder.addParametro("perfil", perfil);
		builder.addParametro("modulo", modulo);

		return super.getSingleObject(query, builder.getParametros());
	}
}
